from django.views import View
# 导入返回响应
from SaaSDevelTool.data_return_response import create_response
# 导入错误信息装饰器
from SaaSDevelTool.data_return_response import error_message_detection
# 获取数据库连接
from SaaSDevelTool.data_mysql_data import db
"""
模型修改
"""


class SaaSDevelModelClassUpdate(View):
    @error_message_detection
    def post(self, request):
        # 获取模型ID
        model_id = int(request.POST.get("model_id"))
        # 获取模型名称
        model_name = request.POST.get("model_name")
        # 获取模型备注
        model_images = request.POST.get("model_images")

        # 判断参数是否传递完整
        if not all([model_id, model_name, model_images]):
            return create_response(code=400, msg="修改失败，模型名称和备注信息为必传参数。")

        # 判断模型名称格式
        if not 4 > len(model_name) and len(model_name) > 30:
            return create_response(code=400, msg="修改失败，模型名称长度不得小于4或大于30。")

        # 判断模型备注信息格式
        if len(model_images) > 100:
            return create_response(code=400, msg="修改失败，模型备注信息长度不得大于100。")

        # 判断模型是否已存在
        query_sum_model_table_sql = """
                    SELECT 
                        model_id,
                        model_name,
                        model_images 
                    FROM 
                        db_saas_center.sum_model_table 
                    WHERE 
                        model_id = '{}';
                    """.format(model_id)
        query_sum_model_table_data = db.findOne(query_sum_model_table_sql)

        # 如果模型存在的情况下
        if not query_sum_model_table_data:
            return create_response(
                code=400, msg="修改失败，当前模型【{}】未添加。"
                .format("**" + model_name))

        # 拼接sql语句进行修改
        create_sum_model_table_sql = """
                UPDATE 
                    db_saas_center.sum_model_table 
                SET 
                    model_name = '{}',
                    model_images = '{}' 
                WHERE 
                    model_id = {}
                ;""".format(model_name,
                            model_images,
                            model_id)
        # 执行修改语句
        db.update(create_sum_model_table_sql)
        # 返回对应的数据
        return create_response(code=200, msg="模型修改成功！")
